// 枚举定义缓存类型
const CacheType = {
  Local: 'Local',
  Session: 'Session'
}

class Cache {
  constructor(type) {
    // 根据缓存类型选择 localStorage 或者 sessionStorage
    this.storage = type === CacheType.Local ? localStorage : sessionStorage
  }

  // 设置缓存
  setCache(key, value) {
    if (value) {
      this.storage.setItem(key, JSON.stringify(value))
    }
  }

  // 获取缓存
  getCache(key) {
    const value = this.storage.getItem(key)
    if (value) {
      return JSON.parse(value)
    }
  }

  // 移除缓存
  removeCache(key) {
    this.storage.removeItem(key)
  }

  // 清空缓存
  clearCache() {
    this.storage.clear()
  }
}

// 创建本地缓存实例
const localCache = new Cache(CacheType.Local)

// 创建会话缓存实例
const sessionCache = new Cache(CacheType.Session)

export { localCache, sessionCache }
